import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import java.sql.*;

public class test {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //使用数据库连接池来获取数据库连接对象
        //一个Java程序，创建多个还是1个连接池对象？一个
        MysqlDataSource ds = new MysqlDataSource();
        //url中的参数，可以使用方法来设置
        ds.setURL("jdbc:mysql://localhost:3306/java44");
        ds.setUser("root");
        ds.setPassword("++++");
        ds.setUseSSL(false);//不使用安全连接，如果不设置有警告
        //设置编码格式：按某个编码保存数据，也要按一样的编码来使用
        ds.setCharacterEncoding("UTF-8");
        //1. 建立数据库连接
        Connection c = ds.getConnection();


        //2.创建操作命令对象
        //使用预编译的操作命令对象PreparedStatement
        //sql语句中，可能包含一些客户端网页传入的数据

        //? 是占位符，类似格式化打印中%s, %d，可以替换掉
        String sql = "select id from student";
        PreparedStatement ps = c.prepareStatement(sql);

        /**
         * 替换占位符: setXXX(index, value)
         * XXX: 值的类型
         * index: 是占位符的索引位置（从1开始）
         * value: 要替换的值
         */


        //3.执行sql语句: 可以不加分号了（加上也不会报错）
        ResultSet rs = ps.executeQuery();//预编译的操作命令对象执行无参的方法

        //4.处理结果集
        while (rs.next()){//遍历每一行数据
            //获取id字段的值
            int id = rs.getInt("id");

            System.out.printf("id: %sn", id);
        }

        //5.释放资源：反向释放（resultSet, Statement, Connection）.close()
    }
}